/*NPjHrMidwQM8l38H4y0iASe0fzxeIPZ4I4uq1+MKmjlyGB44vi1v5nK6cIRUdZ4a*/
import { toast,cardCache,ajax} from 'nc-lightapp-front';
let { updateCache, deleteCacheById } = cardCache;
/**
 * 列表socket连接
 * @param{*} prosp
 * 
 *  */
function listSocketConnect(){
    let _this=this;
    const { socket } = _this.props;
    return socket.connectMesg({
        tableAreaCode: _this.tableId, //表格区域编码
        tableType:_this.tableType?_this.tableType:'',// 增加表格类型 editTable / insertTable
        billpkname: _this.pkname ,//表格行主键
        billtype: _this.billType,   //用于查询追溯
        // serverLocation: "10.11.115.57:8688"// 本地前端调试，请传ip和端口
    })
}
/**
 * 卡片socket连接
 * @param{*} headBtnAreaCode 表头按钮区域ID
 * 
 *  */
function cardSocketConnect(headBtnAreaCode,dataSource){
    let _this=this;
    const { socket } = _this.props;
    return socket.connectMesg({
        headBtnAreaCode: headBtnAreaCode,  // 表头按钮区域ID
        formAreaCode: _this.formId, // 表头Form区域ID
        onMessage: socketMesg.bind(this),//监听消息
        billtype: _this.billType, //单据类型,用于查询追溯
        billpkname: _this.pkname, //单据主键名,用于查询追溯
        dataSource:dataSource, //缓存参数(值为原列表、卡片缓存的命名空间)
        // serverLocation: "10.11.115.57:8688"// 本地前端调试，请传ip和端口
    })
}
/**
 * 卡片socket创建重启回退按钮
 * @param{*} headBtnAreaCode 表头按钮区域ID
 * 
 *  */
function cardSocketErrorFlag(headBtnAreaCode){
    let _this=this;
   return _this.props.button.createErrorFlag({
        headBtnAreaCode: headBtnAreaCode
    })
}
/**
 *  //根据表头数据修改按钮状态
 * @param {*} props 
 * @param {*} res 请求回来的数据
 * @param {*} headBtnAreaCode 按钮区域
 */
function toggleBtnStatus(res,headBtnAreaCode){
    let _this=this;
    let saga_status={'value':'0'};
     if(res.data&&res.data.head&&res.data.head.head&&res.data.head.head.rows[0]&&res.data.head.head.rows[0].values.saga_status){
        saga_status = res.data.head.head.rows[0].values.saga_status;
    }else if(res.data&&res.data.card&&res.data.card.head&&res.data.card.head.head&&res.data.card.head.head.rows[0]&&res.data.card.head.head.rows[0].values.saga_status){
        saga_status = res.data.card.head.head.rows[0].values.saga_status;
    }else if(res.data&&res.data.carddata&&res.data.carddata.head&&res.data.carddata.head.head&&res.data.carddata.head.head.rows[0]&&res.data.carddata.head.head.rows[0].values.saga_status){
        saga_status = res.data.carddata.head.head.rows[0].values.saga_status;
    }else if(res.data&&res.data.billCard&&res.data.billCard.head&&res.data.billCard.head.head&&res.data.billCard.head.head.rows[0]&&res.data.billCard.head.head.rows[0].values.saga_status){//坏账billCard
        saga_status = res.data.billCard.head.head.rows[0].values.saga_status;
    }else if(res&&res.head&&res.head.head&&res.head.head.rows[0]&&res.head.head.rows[0].values.saga_status){//取消时切回原单据时
        saga_status=res.head.head.rows[0].values.saga_status;
    }else if(res&&res.data&&res.data[0]&&res.data[0].head.head&&res.data[0].head.head.rows[0]&&res.data[0].head.head.rows[0].values&&res.data[0].head.head.rows[0].values.saga_status){
        saga_status = res.data[0].head.head.rows[0].values.saga_status       //资金联查收付款的时候数据格式
    }
    _this.props.button.toggleErrorStatus(headBtnAreaCode,{
        isError: saga_status.value === "1"
    })
}
/**
 * //监听消息
 * 
 */
function socketMesg(props, mesg){
    let _this=this;
    if(mesg&&mesg.error){
        //出错时，控制业务按钮显示
    }else{
        //成功时，显示原来的浏览态按钮
       if(_this.data&&_this.data.head&&_this.data.head.head&&_this.data.head.head.rows[0]&&_this.data.head.head.rows[0].values&&_this.data.head.head.rows[0].values.src_syscode){
           //来源于外系统的
           let src=_this.data.head.head.rows[0].values.src_syscode;
           if(src!="0"&&src!="1"&&src!="20"){
            refreshBill(_this);
           }
       }
    }

}
/**
 * 外系统推单的刷新界面
 */
function refreshBill(_this){
   if( _this.props.getUrlParam('id')){
    ajax({
        url: '/nccloud/arap/arappub/cardRefresh.do',
        data: {
            pk_bill: _this.props.getUrlParam('id'),
            pageId: _this.getPagecode(),
            billType: _this.billType
        },
        success: (res) => {
            if (res.data) {
                updateCache(_this.pkname, _this.props.getUrlParam('id'), res.data, _this.formId,_this.dataSource);
                if (res.data.head) {
                    _this.props.form.setAllFormValue({ [_this.formId]: res.data.head[_this.formId] });
                }
                if (res.data.body) {
                    _this.props.cardTable.setTableData(_this.tableId, res.data.body[_this.tableId]);
                }
            } else {
                _this.props.form.EmptyAllFormValue(_this.formId);
                _this.props.cardTable.setTableData(_this.tableId, { rows: [] });
            }
            _this.toggleShow('', res);
        },
        error: (res) => {
            _this.props.form.EmptyAllFormValue(_this.formId);
            _this.props.cardTable.setTableData(_this.tableId, { rows: [] });
            deleteCacheById(_this.pkname, _this.props.getUrlParam('id'), _this.dataSource);
            _this.toggleShow();
            let str = res.message;
            toast({ color: 'danger', content: str });
        }
    });
}
}
/**
 * 非卡片进入卡片界面时，抛错误信息,对外代理方法(throwSagaErrorAgency.call(this,res))   this里要有formID以及pkname
 * @param {*} res 
 */
function throwSagaErrorAgency(res){
    let _this=this;
    let flag=0;
    if (res&&res.head && res.head[this.formId] && res.head[this.formId].rows[0] && res.head[this.formId].rows[0].values.saga_status.value == "1") { //carddate类型
        flag=flag+1
    }else if(res&&res.data&&res.data.head&&res.data.head[this.formId]&&res.data.head[this.formId].rows[0]&&res.data.head[this.formId].rows[0].values.saga_status.value=="1"){//res
        flag=flag+1
    }else if(res&&res.data&&res.data[0]&&res.data[0].head.head&&res.data[0].head.head.rows[0]&&res.data[0].head.head.rows[0].values&&res.data[0].head.head.rows[0].values.saga_status.value=="1"){
        flag=flag+1
    }
    if(flag!=0){
        throwErrorByNotCard(_this.props,_this.formId,_this.pkname) 
    }
    
}

/**
 * 非卡片进入卡片界面时，抛错误信息
 * @param {*} props 
 * @param {*} formId 表单名称
 * @param {*} pkname pk字段名称
 */
function throwErrorByNotCard(props,formId,pkname){
    
    if (props.form.getFormItemsValue(formId,"saga_gtxid")) {

        props.socket.showToast({

            gtxid: props.form.getFormItemsValue(formId, "saga_gtxid").value,

            billpk: props.form.getFormItemsValue(formId, pkname).value

        });

    }
}
export {listSocketConnect,cardSocketConnect,cardSocketErrorFlag,toggleBtnStatus,throwSagaErrorAgency}
/*NPjHrMidwQM8l38H4y0iASe0fzxeIPZ4I4uq1+MKmjlyGB44vi1v5nK6cIRUdZ4a*/